package com.weseal.dry.service;

import common.data.BaseDomain;
import common.query.AbstractPageQuery;
import common.response.PageResponseResult;

import java.io.Serializable;
import java.util.List;

/**
 * @author weseal
 * @title
 * @description
 * @usage
 * @copyright Copyright 2014  rrmj Corporation. All rights reserved.
 * @company 上海众多美网络科技有限公司
 * @create 2018/4/20
 */
public interface BaseService<T extends BaseDomain, V, ID extends Serializable> {

	/**
	 * 分页查询
	 *
	 * @param query
	 * @return
	 */
	PageResponseResult<V> pageQuery(AbstractPageQuery query);

	/**
	 * 单个插入
	 *
	 * @param entity
	 * @param <S>
	 * @return
	 */
	<S extends T> V insert(S entity);

	/**
	 * 批量插入
	 *
	 * @param entities
	 * @param <S>
	 * @return
	 */
	<S extends T> List<V> insert(Iterable<S> entities);

	/**
	 * 根据id查询
	 *
	 * @param id
	 * @return
	 */
	V findById(ID id);

	/**
	 * 判断是否存在
	 *
	 * @param id
	 * @return
	 */
	boolean existsById(ID id);

	/**
	 * 删除
	 *
	 * @param id
	 */
	void deleteById(ID id);

	/**
	 * 修改
	 *
	 * @param id
	 */
	void update(T id);
}
